package com.Cychat.commons.anno;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
* @author XiangWei
* @date 2025/10/21 11:38
* @description 自定义注解，防止Redis缓存穿透
*/
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface CustomCacheable {
    // 缓存的key前缀
    String prefix() default "";
    
    // 缓存的key，支持Spring EL表达式
    String key() default "";
    
    // 缓存过期时间
    long expire() default 300;
    
    // 过期时间单位
    TimeUnit timeUnit() default TimeUnit.SECONDS;
    
    // 是否允许缓存null值，用于防止缓存穿透
    boolean allowNullValue() default true;
    
    // 空值的过期时间，通常设置较短
    long nullValueExpire() default 60;
}